# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/7/28
# @File : C - Many Segments.py
#
# """
#     如何判断两个闭区间是否有交集：
#
#     假设：（a，b），（c，d）两个元组表示两个闭区间
#
#     如果他们要相交，那么必须a小于等于d，同时a本来就小于等于b，
#     同理，同时必须c小于等于b，同时c本来就小于等于d
#
#     所以只需要a，c中的最大值小于等于b，d中的最小值，即可满足上述条件。
#     """
def re(a, b):
    # print(a)
    # print(b)
    return max(a[0], b[0]) <= min(a[1], b[1])




if __name__ == "__main__":
    n = int(input())
    char = []
    for _ in range(n):
        t, l, r = map(int, input().split())
        # 以下操作是把开区间转化为闭区间，从大区间缩到小区间，是可以的
        # 如果小区间放到大区间就不行，会出错。
        if (t == 2):
            char.append((l, r - 0.1))
        elif (t == 3):
            char.append((l + 0.1, r))
        elif (t == 4):
            char.append((l + 0.1, r - 0.1))
        else:
            char.append((l, r))
        """答案里不是用0.1，用的是0.5 其实都一样"""
    cnt = 0
    for i in range(n):
        for j in range(i + 1, n):
            if (re(char[i], char[j])):
                cnt += 1
    print(cnt)

    """
    整体思路还是以n平方的复杂度遍历，但是需要再O（1）的复杂度中判断两个区间是否有交集。
    """